╬πδαΓδσφΦσ

╨αßε≥α ± ⌠αΘδα∞Φ
╩δα±±√ ∩ε≥εΩεΓ
╤≥αφΣα≡≥φ√σ ∩ε≥εΩΦ
╧ε≥εΩΦ Φ ⌠αΘδ√
╟α∩Φ±ⁿ Φ ≈≥σφΦσ ∩ε≥εΩεΓ
╟αΩ≡√ΓαφΦσ ∩ε≥εΩεΓ
╤ß≡ε± ß≤⌠σ≡εΓ
╧ε≥εΩΦ Γ ∩α∞ ≥Φ
Stream Tokenizer
String Tokenizer
╩δα±± File
╧≡εΦτΓεδⁿφ√Θ Σε±≥≤∩
╧≡ΦδεµσφΦσ StreamToken
╧≡ΦδεµσφΦσ DirectFile

    ╧≡ΦδεµσφΦσ StreamToken

    ┬ ∩≡ΦδεµσφΦΦ StreamToken ∞√ Σσ∞εφ±≥≡Φ≡≤σ∞ Φ±∩εδⁿτεΓαφΦσ Ωδα±±α StreamTokenizer Σδ  ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα.

    ┬φα≈αδσ ∩≡ΦδεµσφΦσ τα∩≡α°ΦΓασ≥ ≤ ∩εδⁿτεΓα≥σδ  ±≥≡εΩ≤ Σδ  ≡ατßε≡α, τα∩Φ±√Γα  σσ Γ ⌠αΘδ. ╟α≥σ∞ ²≥ε≥ ⌠αΘδ ε≥Ω≡√Γασ≥±  Σδ  ≈≥σφΦ  ß≤⌠σ≡ΦτεΓαφφ√∞ ∩ε≥εΩε∞ Φ ≡ατßΦ≡ασ≥±  φα ±ε±≥αΓφ√σ ²δσ∞σφ≥√. ╩αµΣ√Θ ≥αΩεΘ ²δσ∞σφ≥ Γ√ΓεΣΦ≥±  Γ ε≥ΣσδⁿφεΘ ±≥≡εΩσ, ΩαΩ ²≥ε ∩εΩαταφε φα ≡Φ±. 4.

    pic04.gif (5983 bytes)

    ╨Φ±. 4. ╨ατßε≡ Γ⌡εΣφεπε ∩ε≥εΩα Γ ∩≡ΦδεµσφΦΦ StreamToken

    ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ, ≈≥ε Γ ∩≡ε÷σ±±σ ≡ατßε≡α τφα≈σφΦσ 3.14 ß√δε Γε±∩≡Φφ ≥ε ΩαΩ ≈Φ±δεΓεσ, α 3,14 - φσ≥. ▌≥ε ∩ε≥ε∞≤, ≈≥ε ∩≡Φ φα±≥≡εΘΩσ ≡ατßε≡∙ΦΩα ∞√ ≤ΩαταδΦ, ≈≥ε ±Φ∞Γεδ '.'  Γδ σ≥±  εß√≈φ√∞.

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ 

    ╚±⌡εΣφ√Θ ≥σΩ±≥ ∩≡ΦδεµσφΦ  StreamToken ∩≡σΣ±≥αΓδσφ Γ δΦ±≥Φφπσ 1.

    ╦Φ±≥Φφπ 1. ╘αΘδ StreamToken.java

    import java.io.*;
    public class StreamToken
    {
      public static void main(String args[])
      {
        DataOutputStream OutStream;
        DataInputStream  InStream;
        byte bKbdInput[] = new byte[256];
        String sOut;
        try
        {
          System.out.println(
            "Enter string to parse...");
          System.in.read(bKbdInput);
          sOut = new String(bKbdInput, 0); 
          OutStream = new DataOutputStream(
            new BufferedOutputStream(
              new FileOutputStream(
               "output.txt")));
          OutStream.writeBytes(sOut);
          OutStream.close();
          InStream = new DataInputStream(
            new BufferedInputStream(
              new FileInputStream(
                "output.txt")));
          TokenizerOfStream tos = 
            new TokenizerOfStream();
          tos.TokenizeIt(InStream);
          InStream.close();
          System.out.println(
            "Press <Enter> to terminate...");
          System.in.read(bKbdInput);
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
      }
    }
    class TokenizerOfStream
    {
      public void TokenizeIt(InputStream is)
      {
        StreamTokenizer stok;
        String str;
        try
        {
          stok = new StreamTokenizer(is);
          stok.slashSlashComments(true);
          stok.ordinaryChar('.');
          while(stok.nextToken() !=
             StreamTokenizer.TT_EOF)
          {
            switch(stok.ttype)
            {
              case StreamTokenizer.TT_WORD:
              {
                str = new String(
                  "\nTT_WORD >" + stok.sval);
                break;
              }
              case StreamTokenizer.TT_NUMBER:
              {
                str = "\nTT_NUMBER >" +
                   Double.toString(stok.nval);
                break;
              }
              case StreamTokenizer.TT_EOL:
              {
                str = new String("> End of line");
                break;
              }
              default:
                {
                  if((char)stok.ttype == '"')
                  {
                    str = new String(
                      "\nTT_WORD >" + stok.sval);
                  }
                  else
                    str = "> " + 
                      String.valueOf(
                        (char)stok.ttype);
                }
            }
            System.out.println(str);
          }
        }
        catch(Exception ioe)
        {
          System.out.println(ioe.toString());
        }
      }
    }

    ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ∩≡ΦδεµσφΦ 

    ╧ε±δσ ΓΓεΣα ±≥≡εΩΦ ± ΩδαΓΦα≥≤≡√ Φ τα∩Φ±Φ σσ Γ ⌠αΘδ ≈σ≡στ ∩ε≥εΩ φα°σ ∩≡ΦδεµσφΦσ ±ετΣασ≥ Γ⌡εΣφεΘ ß≤⌠σ≡ΦτεΓαφφ√Θ ∩ε≥εΩ, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ:

    InStream = new DataInputStream(
      new BufferedInputStream(
      new FileInputStream("output.txt")));

    ─αδσσ Σδ  ²≥επε ∩ε≥εΩα ±ετΣασ≥±  ≡ατßε≡∙ΦΩ, Ωε≥ε≡√Θ ε⌠ε≡∞δσφ Γ ε≥Σσδⁿφε∞ Ωδα±±σ TokenizerOfStream, ε∩≡σΣσδσφφε∞ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ:

    TokenizerOfStream tos = 
      new TokenizerOfStream();

    ┬±δσΣ τα ²≥Φ∞ ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ TokenizeIt, ε∩≡σΣσδσφφ√Θ Γ Ωδα±±σ TokenizerOfStream, ∩σ≡σΣαΓα  σ∞≤ Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±±√δΩ≤ φα Γ⌡εΣφεΘ ∩ε≥εΩ:

    tos.TokenizeIt(InStream);

    ╠σ≥εΣ TokenizeIt Γ√∩εδφ σ≥ ≡ατßε≡ Γ⌡εΣφεπε ∩ε≥εΩα, ε≥εß≡αµα  ≡στ≤δⁿ≥α≥√ ≡ατßε≡α φα Ωεφ±εδΦ. ╧ε±δσ Γ√∩εδφσφΦ  ≡ατßε≡α Γ⌡εΣφεΘ ∩ε≥εΩ ταΩ≡√Γασ≥±  ∞σ≥εΣε∞ close:

    InStream.close();

    ╤α∞εσ Φφ≥σ≡σ±φεσ Γ φα°σ∞ ∩≡ΦδεµσφΦΦ ±Γ ταφε, ε≈σΓΦΣφε, ± Ωδα±±ε∞ TokenizerOfStream, ∩ε²≥ε∞≤ ∩σ≡σΘΣσ∞ Ω σπε ε∩Φ±αφΦ■.

    ┬ ²≥ε∞ Ωδα±±σ ε∩≡σΣσδσφ ≥εδⁿΩε εΣΦφ ∞σ≥εΣ TokenizeIt:

    public void TokenizeIt(InputStream is)
    {
      . . .
    }

    ╧εδ≤≈α  Γ Ωα≈σ±≥Γσ ∩α≡α∞σ≥≡α ±±√δΩ≤ φα Γ⌡εΣφεΘ ∩ε≥εΩ, εφ ∩≡σµΣσ Γ±σπε ±ετΣασ≥ Σδ  φσπε ≡ατßε≡∙ΦΩ Ωδα±±α StreamTokenizer:

    StreamTokenizer stok;
    stok = new StreamTokenizer(is);

    ═α±≥≡εΘΩα ∩α≡α∞σ≥≡εΓ ≡ατßε≡∙ΦΩα ε≈σφⁿ ∩≡ε±≥α Φ ±ΓεΣΦ≥±  Ω Γ√τεΓα∞ Γ±σπε ΣΓ≤⌡ ∞σ≥εΣεΓ:

    stok.slashSlashComments(true);
    stok.ordinaryChar('.');

    ╠σ≥εΣ slashSlashComments ΓΩδ■≈ασ≥ ≡σµΦ∞ ≡α±∩ετφαΓαφΦ  Ωε∞∞σφ≥α≡ΦσΓ Γ ±≥Φδσ  τ√Ωα ∩≡επ≡α∞∞Φ≡εΓαφΦ  ╤++, α ∞σ≥εΣ ordinaryChar εß· Γδ σ≥ ±Φ∞Γεδ '.' εß√≈φ√∞ ±Φ∞Γεδε∞.

    ╧ε±δσ φα±≥≡εΘΩΦ τα∩≤±Ωασ≥±  ÷ΦΩδ ≡ατßε≡α Γ⌡εΣφεπε ∩ε≥εΩα, ∩≡Φ≈σ∞ ≤±δεΓΦσ∞ ταΓσ≡°σφΦ  ÷ΦΩδα  Γδ σ≥±  Σε±≥ΦµσφΦσ Ωεφ÷α ²≥επε ∩ε≥εΩα:

    while(stok.nextToken() != 
      StreamTokenizer.TT_EOF)
    {
      . . .
    }

    ┬ ÷ΦΩδσ αφαδΦτΦ≡≤σ≥±  ±εΣσ≡µΦ∞εσ ∩εδ  ttype, Ωε≥ε≡εσ ταΓΦ±Φ≥ ε≥ ≥Φ∩α ²δσ∞σφ≥α, εßφα≡≤µσφφεπε Γε Γ⌡εΣφε∞ ∩ε≥εΩσ:

    switch(stok.ttype)
    {
      case StreamTokenizer.TT_WORD:
      {
        str = new String("\nTT_WORD >"
           + stok.sval);
        break;
      }
      case StreamTokenizer.TT_NUMBER:
      {
        str = "\nTT_NUMBER >" + 
          Double.toString(stok.nval);
        break;
      }
      case StreamTokenizer.TT_EOL:
      {
        str = new String("> End of line");
        break;
      }
      default:
      {
        if((char)stok.ttype == '"')
          str = new String(
            "\nTT_WORD >" + stok.sval);
        else
          str = "> " + String.valueOf(
           (char)stok.ttype);
      }
    }

    ═α ±δεΓα Φ ≈Φ±δσφφ√σ τφα≈σφΦ  ∞√ ≡σαπΦ≡≤σ∞ ε≈σφⁿ ∩≡ε±≥ε - τα∩Φ±√Γασ∞ Φ⌡ ≥σΩ±≥εΓεσ ∩≡σΣ±≥αΓδσφΦσ Γ ≡αßε≈≤■ ∩σ≡σ∞σφφ≤■ str ≥Φ∩α String. ╧≡Φ εßφα≡≤µσφΦΦ Ωεφ÷α ±≥≡εΩΦ Γ ²≥≤ ∩σ≡σ∞σφφ≤■ τα∩Φ±√Γασ≥±  ±≥≡εΩα End of line.

    ┼±δΦ µσ εßφα≡≤µσφ εß√≈φ√Θ ±Φ∞Γεδ, ∞√ ±≡αΓφΦΓασ∞ σπε ± ±Φ∞Γεδε∞ ΩαΓ√≈ΩΦ. ╧≡Φ ±εΓ∩αΣσφΦΦ Γ ∩σ≡σ∞σφφ≤■ str τα∩Φ±√Γασ≥±  ±εΣσ≡µΦ∞εσ ∩εδ  sval, Γ Ωε≥ε≡ε∞ φα⌡εΣ ≥±  ±δεΓα, εßφα≡≤µσφφ√σ Γφ≤≥≡Φ ΩαΓ√≈σΩ. ┼±δΦ µσ εßφα≡≤µσφφ√Θ ±Φ∞Γεδ φσ  Γδ σ≥±  ±Φ∞Γεδε∞ ΩαΓ√≈ΩΦ, εφ ∩≡σεß≡ατ≤σ≥±  Γ ±≥≡εΩ≤ Φ τα∩Φ±√Γασ≥±  Γ ∩σ≡σ∞σφφ≤■ str.

    ┬ ταΩδ■≈σφΦΦ ∞σ≥εΣ Γ√ΓεΣΦ≥ ±≥≡εΩ≤ str Γ ±≥αφΣα≡≥φ√Θ ∩ε≥εΩ Γ√ΓεΣα, ε≥εß≡αµα  φα Ωεφ±εδΦ Γ√Σσδσφφ√Θ ²δσ∞σφ≥ ∩ε≥εΩα:

    System.out.println(str);


Java | ╧≡εΣ≤Ω≥√ Φ ≡σ°σφΦ  | ╥σ⌡φεδεπΦΦ | ╤σ≡ΓΦ± Φ εß≤≈σφΦσ
╬ Ωε∞∩αφΦΦ | ╧α≡≥φσ≡√ | ═εΓε±≥Φ | ╧εΦ±Ω
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content